#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
    // ./fopen 文件路径
    // 参数检查
    if(argc != 2)
    {
        fprintf(stderr, "eg: ./fopen + 文件路径\n");
        exit(1);
    }

    //定义 文件指针
    FILE* file;
    
    // 参数 路径 打开方式
    // 打开文件是主函数的参数，第二个参数，第一个为可执行程序
    file = fopen(argv[1], "r");
    if(!file)
    {
        fprintf(stderr,"fopen failed : %s\n", argv[1]);
        // exit(1);
        return EXIT_FAILURE;
    }
    //操作
    // getc :读一个字节
    // fgets：读一个字符串
    // fread：读buffer，可以设置缓冲区大小

    //从stdin读
    //getc()
    // getchar() 从stdin读返回 字符

    // fgetc() api
    // int ch;
    // int char_num = 0;
    // int row_num = 0;
    // while((ch = fgetc(file)) != EOF)
    // {
    //     // printf("%c", ch);
    //     char_num++;
    //     if(ch == '\n')
    //         row_num++;
    // }
    // printf("char：%d, row: %d", char_num, row_num);
    // printf("\n");

    //fgets() api
    //以字符串的形式读取文件
    // int size = 32;
    // char buf[32];
    // // 从文件中读取长度size 存储到buf中并返回buffer
    // while(fgets(buf, size, file) != NULL)
    // {
    //     printf("%s", buf);
    // }

    //fread() api
    // 参数 buffer 以size 为单位的进行数据读取，读取nmemb次，从文件流中读取
    char buffer[128];
    memset(buffer, 0, sizeof(buffer));
    int num = fread(buffer, 10, 2, file);
    printf("%s\n", buffer);

    fclose(file);
    return 0;
}